import request from "@/utils/request";

const USER_BASE_URL = "/core/tStockDetailLocation";

const planMrpAPI = {
  /**
   * 获取当前登录用户信息
   *
   * @returns 登录用户昵称、头像信息，包括角色和权限
   */
  getInfo() {
    return request<any, UserInfo>({
      url: `${USER_BASE_URL}/me`,
      method: "get",
    });
  },

  /**
   *
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: planMrpPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, PageResult<planMrpPageVO[]>>({
      url: `/core/mrpHead/getMrpList?object=${query}`,
      method: "get",
    });
  },

  getcusName(queryParams: any) {
    return request<any, any>({
      url: `/core/company/contract/list`,
      method: "post",
      data: queryParams,
    });
  },

  /**
   *
   *
   * @param queryParams 查询参数
   */
  getDialogPage(queryParams: planMrpPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, PageResult<planMrpPageVO[]>>({
      url: `/core/tSalesOrder/getTSalesOrderList?object=${query}`,
      method: "get",
    });
  },

  /**
   * 库存查询-库存total
   *
   * @param queryParams 查询参数
   */
  getTotal(queryParams: planMrpPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, totalVO>({
      url: `/core/tStockHead/getTStockDetailTotal?object=${query}`,
      method: "get",
    });
  },

  /**
   * 获取用户表单详情
   *
   * @param userId 用户ID
   * @returns 用户表单详情
   */
  getFormData(userId: number) {
    return request<any, UserForm>({
      url: `${USER_BASE_URL}/${userId}/form`,
      method: "get",
    });
  },

  /**
   * 添加用户
   *
   * @param data 用户表单数据
   */
  add(data: UserForm) {
    return request({
      url: `${USER_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 添加用户
   *
   * @param data 用户表单数据
   */
  runSomeMrp(data: any) {
    return request({
      url: `/core/mrpHead/createMrpPlan`,
      method: "post",
      data: data,
    });
  },

  forcePassPlan(data: any) {
    return request({
      url: `/core/mrpHead/forceMrpPass`,
      method: "post",
      data: data,
    });
  },

  returnPlan(data: any) {
    return request({
      url: `/core/mrpHead/rerunMrpPlan`,
      method: "post",
      data: data,
    });
  },

  delPlan(data: any) {
    return request({
      url: `/core/mrpHead/deleteMrpPlan`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改用户
   *
   * @param id 用户ID
   * @param data 用户表单数据
   */
  update(id: number, data: UserForm) {
    return request({
      url: `${USER_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 修改用户密码
   *
   * @param id 用户ID
   * @param password 新密码
   */
  resetPassword(id: number, password: string) {
    return request({
      url: `${USER_BASE_URL}/${id}/password/reset`,
      method: "put",
      params: { password: password },
    });
  },

  /**
   * 批量删除用户，多个以英文逗号(,)分割
   *
   * @param ids 用户ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${USER_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /** 下载用户导入模板 */
  downloadTemplate() {
    return request({
      url: `${USER_BASE_URL}/template`,
      method: "get",
      responseType: "blob",
    });
  },

  /**
   * 导出用户
   *
   * @param queryParams 查询参数
   */
  export(queryParams: planMrpPageQuery) {
    return request({
      url: `${USER_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "blob",
    });
  },

  /**
   * 导入用户
   *
   * @param deptId 部门ID
   * @param file 导入文件
   */
  import(deptId: number, file: File) {
    const formData = new FormData();
    formData.append("file", file);
    return request({
      url: `${USER_BASE_URL}/import`,
      method: "post",
      params: { deptId: deptId },
      data: formData,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  },

  /** 获取个人中心用户信息 */
  getProfile() {
    return request<any, UserProfileVO>({
      url: `${USER_BASE_URL}/profile`,
      method: "get",
    });
  },

  /** 修改个人中心用户信息 */
  updateProfile(data: UserProfileForm) {
    return request({
      url: `${USER_BASE_URL}/profile`,
      method: "put",
      data: data,
    });
  },

  /** 修改个人中心用户密码 */
  changePassword(data: PasswordChangeForm) {
    return request({
      url: `${USER_BASE_URL}/password`,
      method: "put",
      data: data,
    });
  },

  /**
   *   发送手机/邮箱验证码
   *
   * @param contact 联系方式  手机号/邮箱
   * @param contactType 联系方式类型 MOBILE:手机;EMAIL:邮箱
   */
  sendVerificationCode(contact: string, contactType: string) {
    return request({
      url: `${USER_BASE_URL}/send-verification-code`,
      method: "get",
      params: { contact: contact, contactType: contactType },
    });
  },

  /** 绑定个人中心用户手机 */
  bindMobile(data: MobileBindingForm) {
    return request({
      url: `${USER_BASE_URL}/mobile`,
      method: "put",
      data: data,
    });
  },

  /** 绑定个人中心用户邮箱 */
  bindEmail(data: EmailBindingForm) {
    return request({
      url: `${USER_BASE_URL}/email`,
      method: "put",
      data: data,
    });
  },

  /**
   *  获取用户下拉列表
   */
  getOptions() {
    return request<any, OptionType[]>({
      url: `${USER_BASE_URL}/options`,
      method: "get",
    });
  },

  getTypePage(queryParams: any) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, any>({
      url: `/core/product/getProductList?object=${query}`,
      method: "get",
    });
  },
};

export default planMrpAPI;

/** 登录用户信息 */
export interface UserInfo {
  /** 用户ID */
  userId?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 角色 */
  roles: string[];

  /** 权限 */
  perms: string[];
}

/**
 * 用户分页查询对象
 */
export interface planMrpPageQuery extends PageQuery {
  /** 计划状态 */
  status?: string;

  /** 计划编号 */
  code?: string;

  /** 客户名称 */
  customerName?: string;

  /** 生产时间 */
  timeScopes?: string;
  /** 订单编号 */
  salesOrderCodes?: string;

  /** 订单编号 */
  codeList?: string[];

  /** 产品名称 */
  productCode?: string;

  /** 查订单列表 */

  mrpFlag?: boolean;
}

export interface rowMrpPageQuery extends PageQuery {
  /** 订单编号 */
  salesOrderCode?: string;
  /** 客户? */
  /** 计划编号 */
  code?: string;

  /** 生产时间 */
  timeScopes?: string;
  /** 客户 */
  companyCode?: string;
  customerName?: string;
  /** 查订单列表 */

  mrpFlag?: boolean;
  /** 订单编号 */
  codeList?: string[];
}

/** 订单分页对象 */
export interface planMrpPageVO {
  /**
   * 计划编号
   */
  code?: string;
  /**
   * 筐码
   */
  basketCode: string;

  /**
   * 标签码
   */
  tagCode: string;

  /**
   * 产品名称
   */
  productName: string;

  /**
   * 供应商
   */
  supplier: string;

  /**
   * 原料入库时间
   */
  rawMaterialInboundTime: string;

  /**
   * 生产时间
   */
  productionTime: string;

  /**
   * 生产工序
   */
  productionProcess: string;

  /**
   * 质检员
   */
  qualityInspector: string;

  /**
   * 配送时间
   */
  deliveryTime: string;

  /**
   * 状态
   */
  status: number;
}

/** 订单分页对象 */
export interface planMrpDialogPageVO {
  /** 采购编号 */
  code?: string;
  /** 字首 */
  prefix?: string;
  /** 流水号 */
  genNo?: string | number; // 假设流水号可以是字符串或数字
  /** 单据类别 */
  docType?: string;
  /** 客户编号 */
  companyCode?: string;
  /** 币别 */
  currency?: string;
  /** 汇率 */
  rate?: number;
  /** 单据日期 */
  issueDate?: string | Date; // 假设单据日期可以是字符串或Date对象
  /** 送货日期 */
  deliveryDate?: string | Date;
  /** 有效日期 */
  dueDate?: string | Date;
  /** 折扣率 */
  discountRate?: number;
  /** 折扣金额 */
  discountAmount?: number;
  /** 参考编号 */
  refCode?: string;
  /** 其它参考编号 */
  otherRef?: string;
  /** 付款条款 */
  paymentTerm?: string;
  /** 贸易条款 */
  tradeTerm?: string;
  /** 付运条款 */
  shippingTerm?: string;
  /** 送货地址 */
  shipCode?: string;
  /** 包装信息 */
  packing?: string;
  /** 箱唛 */
  shippingMark?: string;
  /** 纸箱侧唛 */
  shippingSideMark?: string;
  /** 采购人员 */
  salesMan?: string;
  /** 订单总金额 */
  orderAmount?: number;
  /** 备注 */
  remark?: string;
  /** 状态 */
  status?: string;
  /** 录入日期 */
  createDate?: string | Date;
  /** 录入人员 */
  createUser?: string;
  /** 录入人员名字 */
  createName?: string;
  /** 修改日期 */
  modifyDate?: string | Date;
  /** 修改人员 */
  modifyUser?: string;
  /** 修改人员名字 */
  modifyName?: string;
  /** 审核日期 */
  approvalDate?: string | Date;
  /** 审核人员 */
  approvalUser?: string;
  /** 审核人员名字 */
  approvalName?: string;
}

export interface totalVO {
  //总计
  qtyTotal?: number;
}

/** 用户表单类型 */
export interface UserForm {
  /** 用户头像 */
  avatar?: string;
  /** 部门ID */
  deptId?: number;
  /** 邮箱 */
  email?: string;
  /** 性别 */
  gender?: number;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  mobile?: string;
  /** 昵称 */
  nickname?: string;
  /** 角色ID集合 */
  roleIds?: number[];
  /** 用户状态(1:正常;0:禁用) */
  status?: number;
  /** 用户名 */
  username?: string;
}

/** 个人中心用户信息 */
export interface UserProfileVO {
  /** 用户ID */
  id?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 性别 */
  gender?: number;

  /** 手机号 */
  mobile?: string;

  /** 邮箱 */
  email?: string;

  /** 部门名称 */
  deptName?: string;

  /** 角色名称，多个使用英文逗号(,)分割 */
  roleNames?: string;

  /** 创建时间 */
  createTime?: Date;
}

/** 个人中心用户信息表单 */
export interface UserProfileForm {
  /** 用户ID */
  id?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 性别 */
  gender?: number;

  /** 手机号 */
  mobile?: string;

  /** 邮箱 */
  email?: string;
}

/** 修改密码表单 */
export interface PasswordChangeForm {
  /** 原密码 */
  oldPassword?: string;
  /** 新密码 */
  newPassword?: string;
  /** 确认新密码 */
  confirmPassword?: string;
}

/** 修改手机表单 */
export interface MobileBindingForm {
  /** 手机号 */
  mobile?: string;
  /** 验证码 */
  code?: string;
}

/** 修改邮箱表单 */
export interface EmailBindingForm {
  /** 邮箱 */
  email?: string;
  /** 验证码 */
  code?: string;
}
